/**
 * @file AT24C02_Config.h
 * @brief AT24C02 EEPROM芯片配置头文件
 * @details 该文件定义了AT24C02 EEPROM芯片的配置参数和函数声明
 */

// 防止头文件重复包含
#ifndef	__AT24C02_CONFIG_H
#define	__AT24C02_CONFIG_H

// 包含STM32F10x系列微控制器的标准外设库头文件
#include "stm32f10x.h"
#include "stdio.h"
// 包含模拟I2C接口的配置头文件
#include "IIC_Simulate_Config.h"

/**
 * @def AT24C02_ADDRESS
 * @brief AT24C02的I2C设备地址
 * @note 0x50是AT24C02的默认7位地址（A2=A1=A0=0时）
 *       实际传输时左移一位，最低位表示读写操作
 */
#define AT24C02_ADDRESS	0x50

/**
 * @var extern u8 Data[8]
 * @brief 外部定义的8字节数据缓冲区
 * @note 该数组用于存储从AT24C02读取或要写入的数据
 */
extern u8 Data[8];

/**
 * @fn void AT24C02_Config(void)
 * @brief AT24C02初始化配置函数
 * @details 初始化与AT24C02通信所需的硬件接口
 */
void AT24C02_Config(void);

/**
 * @fn u8 AT24C02_Current_Read_Data(void)
 * @brief 当前地址读取数据
 * @return 读取到的1字节数据
 * @note 读取AT24C02内部指针当前指向地址的数据
 *       内部指针会在每次读写操作后自动递增
 */
u8 AT24C02_Current_Read_Data(void);

/**
 * @fn u8 AT24C02_Random_Read_Data(u8 reg_addr)
 * @brief 随机地址读取数据
 * @param reg_addr 要读取的寄存器地址(0-255)
 * @return 读取到的1字节数据
 * @note 先设置AT24C02内部指针到指定地址，然后读取该地址的数据
 */
u8 AT24C02_Random_Read_Data(u8 reg_addr);

/**
 * @fn bool AT24C02_Sequential_Read_Data(u8 Data_length, u8 *buffer)
 * @brief 顺序读取多个数据
 * @param Data_length 要读取的数据长度(字节数)
 * @param buffer 存储读取数据的缓冲区指针
 * @return 读取成功返回true，失败返回false
 * @note 从当前地址开始连续读取多个字节
 *       内部指针会自动递增，支持跨页读取
 */
bool AT24C02_Sequential_Read_Data(u8 Data_length, u8 *buffer);

#endif // 结束头文件防止重复包含
